package com.example.domain.dto.unit;

import com.example.domain.entity.Unit;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonInclude;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.time.LocalDateTime;

/**
 * 单位DTO
 * 
 * @author Means
 * @since 2025-10-27
 */
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@JsonInclude(JsonInclude.Include.NON_NULL)
public class UnitDTO {
    
    /**
     * 单位代码（主键）
     */
    private String code;
    
    /**
     * 单位名称
     */
    private String name;
    
    /**
     * 单位描述
     */
    private String description;
    
    /**
     * 创建时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime createdAt;
    
    /**
     * 更新时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime updatedAt;
    
    /**
     * 从实体类创建DTO
     * 
     * @param unit 单位实体
     * @return UnitDTO
     */
    public static UnitDTO from(Unit unit) {
        if (unit == null) {
            return null;
        }
        
        return UnitDTO.builder()
                .code(unit.getCode())
                .name(unit.getName())
                .description(unit.getDescription())
                .createdAt(unit.getCreatedAt())
                .updatedAt(unit.getUpdatedAt())
                .build();
    }
}

